import { ActionType,EntityDetailPage } from "../../index";
import _ from "lodash";
import { fromJS } from "immutable";
/**
 * 打开更多界面以及弹窗界面
 * @param componentId 唯一识别
 * @param item 选中的对象
 * @param unineController 是否单独控制
 * @param moreShow 是否展开更多
 * @param popShow 是否弹窗
 * @returns
 */
export function showItem(
  componentId: string,
  item: any,
  unineController: boolean,
  moreShow: boolean,
  popShow: boolean
) {
  return async (dispatch: any, getState: any) => {
    let data = fromJS(getState().reducer).getIn([
      "instances",
      componentId,
      "data",
    ]);

    if (unineController) {
      //是单独控制，更多和弹窗没关系
      _.forEach(data, (items: any) => {
        //展开更多（只展开选中的这条，关闭其他条目）
        if (moreShow) {
          if (items.uuid == item.uuid && !items.show) {
            items.show = moreShow;
          } else {
            items.show = !moreShow;
          }
        }
        if (popShow) {
          //打开弹窗（只弹出选中的这条，关闭其他条目）
          //如果需要单独控制，则需要拆分两个方法进行独立控制。
          if (items.uuid == item.uuid && !items.showPop) {
            items.showPop = popShow;
          } else {
            items.showPop = !popShow;
          }
        }
      });
    } else {
      _.forEach(data, (items: any) => {
        if (moreShow) {
          //展开更多（只展开选中的这条，关闭其他条目）
          if (items.uuid == item.uuid && !items.show) {
            items.show = moreShow;
          } else {
            items.show = !moreShow;
          }
        } else {
          items.show = moreShow;
        }
        if (popShow) {
          //打开弹窗（只弹出选中的这条，关闭其他条目）
          //如果需要单独控制，则需要拆分两个方法进行独立控制。
          if (items.uuid == item.uuid && !items.showPop) {
            items.showPop = popShow;
          } else {
            items.showPop = !popShow;
          }
        } else {
          items.showPop = popShow;
        }
      });
    }

    dispatch({
      type: ActionType.SCHADULE_VISIT_INIT_DATA,
      componentId,
      data: _.cloneDeep(data),
    });
  };
}
